Versioning and effectivity dates for orchestration business process design

ABSTRACT

Particular embodiments generally relate to the orchestration of an order fulfillment business process using effectivity dates and versioning. In one embodiment, a plurality of services in the order fulfillment business process are provided. A definition of a business process including one or more services is received from an interface. The one or more services may be defined in steps to be performed in the order fulfillment business process. An effectivity date associated with the definition is also received from the interface. For example, the effectivity date may be associated with the business process or individual steps in the business process and may specify a period of time during which the process or step can be used. The effectivity dates and versioning may then be enforced at run-time.

CROSS REFERENCES TO RELATED APPLICATIONS

This invention claims priority from U.S. Provisional Patent applicationSer. No. 61/114,276 filed on Nov. 13, 2008 which is hereby incorporatedby reference as if set forth in full in this application.

BACKGROUND

Particular embodiments generally relate to the orchestration of businessprocesses.

Business enterprises need to effectively model business processes tocompete in a business environment. Business processes change over timeand thus the processes need to be versioned. Also, business processesare orchestrated over a long time period and it is often necessary tohave multiple versions of a business process in operation at the sametime. Further, a user may only want a process to be effective on certaindates.

A business analyst typically models different versions of the businessprocess. Then, to have the different versions of the business processtranslated into executable processes, the business analyst has tocontact an information technology (IT) designer. For example, formultiple versions of a process to be in use at the same time, the ITdesigner needs to be explicitly specify the version in the uniformresource identifier (URI) or partner link in the executable process.Thus, each time a new version date needs to be added, an IT designerneeds to be contacted. Also, the IT designer needs to wait until a datethat the business analyst wants the process to run to deploy thebusiness process. Also, the IT designer must un-deploy the executableprocess when the effectivity date becomes invalid. This is inconvenientand time-consuming.

Currently, it is only possible to create business process executionlanguage (BPEL) processes in a BPEL editor and invoke a deployed BPELprocess. Because the IT designer and the business analysts havedifferent skill sets (the business analysts are familiar with thebusiness process being modeled and the IT designer is familiar with theorchestration language, but not the business process), the resultingBPEL process developed by the IT designer may not work as the businessanalyst imagined. Accordingly, there may be a wide divide between theoriginally-conceived business process model and the implemented model.This is further magnified when multiple versions of a business processneed to be designed.

SUMMARY

Particular embodiments generally relate to the orchestration of an orderfulfillment business process using effectivity dates and versioning.

In one embodiment, a plurality of services in the order fulfillmentbusiness process are provided. A definition of a business processincluding one or more services is received from an interface. The one ormore services may be modeled in steps to be performed in the orderfulfillment business process. An effectivity date associated with thedefinition is also received from the interface. For example, theeffectivity date may be associated with the business process orindividual steps in the business process and may specify a period oftime during which the process or step can be used.

The definition is then stored in a run-time table, where the definitionincludes the effectivity date and/or a version number. During run-time,metadata for the definition is read from the run-time table. It isdetermined if the right version is being used. Also, it is determined ifthe effectivity date associated with the definition is valid. Forexample, if the effectivity date was associated with the process as awhole, then the effectivity date is checked to see if the businessprocess can be executed. If not, then the business process is notexecuted and an error may be returned. If the effectivity date is validfor the business process, metadata for the definition may be used tocreate an executable process including the one or more steps. Steps inthe executable process may be invoked; however, if an effectivity dateis specified for a step, it is checked to see if the step should beinvoked. The step is not invoked if the effectivity date is not valid.

A further understanding of the nature and the advantages of particularembodiments disclosed herein may be realized by reference of theremaining portions of the specification and the attached drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts an example of a system for providing an orchestrationprocess design and authoring environment according to one embodiment.

FIG. 2 shows an example of business processes that have been modeledusing versioning and effectivity dates according to one embodiment.

FIG. 3 depicts an example of an interface according to one embodiment.

FIG. 4 shows an example of the user interface that can be used to inputeffectivity dates and versioning according to one embodiment.

FIG. 5 describes the run-time operation according to one embodiment.

FIG. 6 depicts a simplified flowchart of a method for checkingeffectivity dates and versioning information according to oneembodiment.

DETAILED DESCRIPTION OF EMBODIMENTS

Particular embodiments provide for the versioning and setting ofeffectivity dates in the orchestration of an order fulfillment businessprocess. An effectivity date may be a specified for a business processor process step that denotes a period of time during which that businessprocess or process step can be used. A version may be a differentinstance of the same business process.

The versioning and setting of effectivity dates is important in businessprocess administration because business requirements change andinstances of business processes can be active over a relatively longperiod of time (e.g., weeks). Business users may want to set effectivitydates at the process or step level. Particular embodiments provide theability for a user to set versioning or effectivity dates using aninterface. This information may be stored in a data table. Metadata fromthe data table is then stored in a run-time table when the businessprocess is executed. At run-time, the run-time table is read and anexecutable process is assembled. For example, a user may have defined aset of steps in the business process. Services for the set of steps areassembled into an executable process. The set of steps are then invokedin a series of steps according to orchestration requirements (e.g.,branching and conditional rules). When the run-time table is read,effectivity dates may be checked to see if the executable process shouldbe run. Also, if the effectivity date is specified for any step, theeffectivity date is checked to see if the steps should be run.Accordingly, particular embodiments offer a run-time solution thatallows effectivity dates to be set and checked at run-time. Also, theversioning of business processes may also be specified by settingversioning information using the user interface. The creation of a newversion of a business process does not affect any other executableprocesses that are running for different versions of the businessprocess.

The following describes an overall system that may be used to generateand run an executable process. The effectivity dates and versioning willbe described in FIG. 2. The interface that may be used to abstract theauthoring of executable processes is described in FIG. 3. An interfaceto set effectivity dates and versioning is then described in FIG. 4. Therun-time environment is described in FIG. 5 and a method to invokeservices at run-time using effectivity dates and versioning is thendescribed in FIG. 6.

System Overview

Particular embodiments provide a tool that provides a high degree ofabstraction for business process modeling in an order fulfillmentbusiness process. Business processes may be modeled by users, such asbusiness analysts, and do not need any coding from an IT designer tohave the business process executed. Users are provided the flexibilityto define business processes in a user interface, such as a web-basedadministration user interface. The business process may identify one ormore services that define steps to be performed in the order fulfillmentprocess. A run-time engine then uses the definition to dynamicallyinvoke the services based on the definition of the business process.

In the business environment, business users are often process modelers,not IT personnel. By providing a web-based administration environment,the business users may be able to design the business process. Theprocess definitions may be defined in business terms and not in ITterms. Particular embodiments allow an administrative environmentoutside of a code editor, such as a BPEL editor, for defining processesusing associated services. Users can configure processes that can beexecuted at runtime as executable processes without IT involvement. Thisalleviates the need for deploying the processes every time amodification of the business process is needed. The user sets up thesequence of services on a data table. The modeled business process isthen used to perform an executable process, which is assembled andexecuted at run-time. In one embodiment, ‘run-time’ can be defined asthe time when an order is received for processing. Metadata is assembledin data run-time table and used to define the executable process for thebusiness process. The metadata is used to invoke services in theexecutable process.

In one example, the services invoked are encapsulated and reusable. Themetadata is used to determine how and when to invoke services. Also,depending on the metadata, input arguments are generated and sent to theservices to invoke the service. A common signature is used to send datato invoke the services. Different input arguments can be formulated fordifferent services used in different executable processes. The inputarguments are formatted in the same way such that a service can read thedifferent sets of data and invoke the service. Thus, services can bere-used in different business processes without the need to be re-codedand redeployed. Deployment of services indicates the process is ready tobe released for testing or production.

FIG. 1 depicts an example of a system 100 for providing an orchestrationprocess design and authoring environment according to one embodiment.System 100 includes an orchestration system 102 and a client 104.Although single instances of orchestration system 102 and client 104 areprovided, it will be understood that multiple instances may be used.Also, orchestration system 102 and client 104 may be part of adistributed computing system. That is, functions described may bedistributed among various computing devices.

Client 104 may be a computing device or set of computing devices thatare configured to allow a business process to be modeled. Orchestrationsystem 102 orchestrates the invocation and running of services for anexecutable process 110 for the business process. Orchestration, asdescribed, may be the coordination and invoking of services that need tobe performed in the business process.

As used, a business process may be modeled by a user. The businessprocess is a definition of steps to be performed. The steps are definedin interface 108. An executable process is the process that is executedby run-time engine 112. The executable process includes code that isexecuted to coordination performing of services.

A service library 106 that includes multiple services that can beincluded in a business process. In one embodiment, a service library 106includes services that can be performed in an order fulfillment businessprocess. Order fulfillment involves processes that are performed tofulfill an order. For example, an order may be received from an ordercapture system. The order may be for a good, service, etc. Differentservices may be performed to fulfill the order, such as shipment,installation, invoicing, etc. The order fulfillment process may becharacterized in these different services. It is expected for any givenorder, some or all of these processes may need to be performed tofulfill the order. Accordingly, particular embodiments create servicesfor the services that are expected to be performed in an orderfulfillment process.

Services can be non-configurable units and configurable units.Non-configurable units are services that are built and provided tocustomers. The non-configurable units are units that likely may be usedin an order fulfillment process. For example, it is expected thatdifferent services may have to be performed in the order fulfillmentprocess, such as account receivable. Accordingly, these services may bemodeled using a language, such as BPEL. Although BPEL is described, itwill be understand that other languages may be used.

Configurable units are services that are built and defined by acustomer. For example, a wrapper is provided around a service that isconfigured by a user. For example, a customer may want a shippingservice that is specific to the customer's company. Accordingly, theservice performed by the configurable unit may be defined and built by acustomer, but the wrapper allows runtime engine 112 to invoke theservice automatically. This allows customers to define services that areneeded for their individual organizations.

The services may be re-used in different business processes. Theservices are encapsulated and configured to receive a common signaturefor the service to be performed. For example, for each business process,different parameters may be provided (i.e., different products may beordered for different prices, etc.). This causes different inputarguments to be inputted into the service. The common signature definesa data structure that allows the service to be re-used for differentexecutable processes 110. Thus, the same deployed service is used toprocess different input arguments for the different orders, butdifferent results may be obtained. In this way, the order fulfillmentprocess can be abstracted. Different users can define which servicesneed to be performed without regard to how the processes are coded in anorchestration language.

Interface 108 may be an administration user interface. For example, agraphical user interface allows a user to model a business process at anabstract level. For example, service library 106 may be provided toclient 104. The user may then use interface 108 to define steps of thebusiness process using services in service library 106. A user maydefine a plurality of steps in the business process. Each step may beassociated with a service in service library 106.

The steps may be stored in a data table, which may include metadata thatmay be used by runtime engine 112 to orchestrate executable process 110.The data table is shown as being stored in storage 114. It will beunderstood that the data table may be stored in any area, such as inclient 104, orchestration system 102, or any other device. The metadatamay be defined by the user, determined from data tables, and/ororchestration rules. The user defines the sequence in which the servicesare to be invoked as well as conditional or parallel branching that maybe required to effect the business processing rules. When the userselects a service for a process step, the user also provides additionalmetadata that is used to determine how the processing data is to beexecuted during the processing of an order at runtime. For example,conditional or parallel branching is defined.

At runtime, runtime engine 112 receives the metadata uses it todetermine parameters for the orchestration of executable process 110.Runtime engine 112 uses the parameters to determine which steps toperform and when in executable process 110. For example, runtime engine112 orchestrates executable process 110 by invoking services in theseries of steps that have been defined by the user. As will be describedin more detail below, parallel and conditional processing of steps canalso be performed. Also, the metadata can be used to determine the inputarguments used to invoke the services.

The metadata for the table is read at runtime and services are invoked,which allows changes to executable process 110 to be performed andrealized at runtime automatically. Runtime engine 112 reads through eachstep that is defined and performs the steps. If a change in service isdesired, the user may use interface 108 to add/delete/replace a service.At run-time, when the table is read, the change may be automaticallyperformed.

Versioning and Effectivity Dates

FIG. 2 shows an example of business processes that have been modeledusing versioning and effectivity dates according to one embodiment. Asshown, a service library 106 includes services and sub-processes. A usermay use interface 108 to select different services and sub-processes tobe included in business processes. As shown, a carpet businessprocess-version 1 and a carpet business process-version 2 have beendesigned by a business user. The carpet business process has twoversions although any number of versions may be generated.

In carpet business process-version 1, the global order promising (GOP),shipping, sub-process 2 (SP2), and an invoice services have beenincluded. In contrast, carpet business process-version 2 includes theservice A, shipping, sub-process 2 (SP2), and sub-process 4 (SP4)services.

Versioning allows users to distinguish several business process flowsthat are modified. Changes to the business process flows should notaffect already-running executable processes 110. For example, carpetbusiness process-version 1 may be a running executable process 110. Whenversion 2 is generated, it should not affect the running of version 1.Use of versioning allows version 2 to be created and run withoutaffecting the running of version 1.

Effectivity dates may also be specified for the business processes. Forexample, version 2 has an effectivity date associated with it. The datemay specify a start date and end date for a period of validity. Also,the effectivity date does not need to be a period but may be just astart or end date. The effectivity date is not limited to an actualdate, but may be dependent on an event or other condition that can beused to determine when the executable process is valid. For example, theeffectivity date may specify that the executable process is run until anevent occurs. In FIG. 2, the effectivity date #1 includes a time periodin which version 2 is valid. For example, a business user may only wantversion 2 to be used after a specific date. Also, individual stepsand/or sub-processes in the business processes may have effectivitydates associated with them. For example, the shipping service step inversion 1 has an effectivity date #2. In this case, version 1 may be arunning process but the shipping step may only be performed during thetime period specified by the effectivity date. Version 2 may alsoinclude effectivity dates #3 and #4 for other service steps.

Use of effectivity dates allow a business user to specify when a processor steps in a process should no longer be used. When an executableprocess becomes invalid, the process does not need to be un-deployed orremoved from the processing environment because the effectivity datesare checked at run-time. If the effectivity date is not valid duringrun-time, the executable process will not be run. Also, businessprocesses may be pre-deployed, that is they may be released before theirplanned date of use into the system. At run-time, the executable processwill not be run until the effectivity date is valid. This allowsflexibility and control for a business user. The versioning andeffectivity dates are enforced at run-time and an IT designer does nothave to configure the executable processes for the versioning andeffectivity dates to be effective.

The ability to define business processes is convenient for a user usinga user interface as described in FIG. 3.

Interface

FIG. 2 depicts an example of an interface 108 according to oneembodiment. Process level table 216 summarizes different businessprocesses that have been modeled. As shown, the businessprocesses—Carpet Installation and Process 1—have been modeled by a user.

In process level table 216, a process name column 218 shows a carpetinstallation business process and process 1 have been modeled. Adescription column 220 describes the process. A process class column 222describes the class of the process: A status column 226 is the status ofthe executable process. There may be different statuses of executableprocesses 110. For example, some business processes may be approved forproduction, approved for test, or may be new. Production means that theservice is approved for regular business use, approved for test isapproved for testing, and new is a service in development.

A business process in table 216 can be selected and data table 200 mayshow the step details for individual business processes. One businessprocess is entitled Carpet Installation and a data table 200 of stepdetails shows each service that has been defined for the CarpetInstallation.

In data table 200, a step column 204 identifies the steps in thebusiness process. For example, steps 10-60 are provided. Services forthese steps may be performed at runtime. The steps may be run insequence from top to bottom (or in any other order). In this case, astep 10 is performed and when finished, a step 20 is performed, and soon. Additionally, although not shown, conditional and parallel steps mayalso be defined using interface 108. Conditional steps are steps thatdepend on a result occurring (e.g., another step finishing) and parallelsteps are performed in parallel. A user defines whether steps should beconditional or parallel.

Step name column 206 provides a descriptive name for the steps. Forexample, ship carpet, wait for shipped, install carpet, wait forcomplete, and invoice steps are provided.

A task type column 208 describes what type of task is being performed.For example, for the ship carpet task, an external system may perform ashipping task and for the invoice step, an invoice system may invoicefor a bill.

A service column 212 identifies the service associated with the step. Atask name column 214 is the name of the task. For example, theses taskshave to do with carpet and are named carpet shipment, carpetinstallation, and invoice for carpet. It is possible that if somethingother than a carpet is being installed, the task name may be different.For example, a sink shipment, sink installation, and invoice for sinkmay be the names of these tasks.

Users may use interface 108 to generate data table 200. A user mayselect services from a menu for service library 106. For example, a useruses a menu interface 212 to select services from service library 106.Drop-down menus, drag-and-drop options, and other visual processes maybe used to define executable process 110. Users are provided with anorchestration-specific interface that presents the business process datawith suitable validations, rather than being required to learn thecomplexities of a multipurpose IT development environment. This allows auser to model a business process in an abstract manner, but haveexecutable process 110 be generated and executed from the model.

The services in service library 106 may be made up of non-configurableunits and configurable units. For example, non-configurable units areprovided in a column 302 and configurable units are provided in a column304. As shown, services that are non-configurable include shipping,accounts receivable (AR), invoice, and global order promising (GOP).Also, configurable units are designated as A, B, C, and D.

Table 200 is generated as shown in interface 108 using menu 212. Table200 is associated with metadata that describes the services to beperformed and any arguments that are needed to invoke the services.

Example Interface Using Versioning and Effectivity Dates

FIG. 4 shows an example of user interface 108 that can be used to inputeffectivity dates and versioning according to one embodiment. As shown,an effectivity start date 350 and an effectivity end date 352 may beinput by user. The effectivity start and end date is for the businessprocess carpet installation. The effectivity start date shows the dateon which the business process may be valid and the effectivity end dateshows the date that the business process becomes invalid.

Steps are shown in a section 354 for the process carpet installationbusiness process. An effectivity date 356 may also be provided for eachstep of the business process. For example, an effectivity date has beenprovided for the ScheduleAppt step. It should be noted that any numberof effectivity dates may be provided for the steps of the businessprocess.

A version 358 is used to specify the version number of this businessprocess. In this case, this is version 1. If the user wanted to createversion 2, version entry box 358 would be changed to 2.

Accordingly, interface 108 provides an abstract environment to specifyeffectivity dates and versioning information. Information for theversioning and effectivity dates received from interface 108 may beimported to a data table 200. This information is used along withinformation for the steps to be invoked at run-time to create anexecutable process. After defining the business process using interface108, an executable process may be generated at run-time. The servicesare assembled into an executable process as will be described below.

Run-Time Operation

Once the business process is modeled in interface 108 and released bysetting the process status, runtime engine 112 is used to orchestratethe invocation of the services. FIG. 3 describes the runtime operationaccording to one embodiment. A table reader 302 receives metadata frominterface 108 defining the business process. Table reader 302 may copythe data to a runtime table 306 but this is not necessary.

During run-time, a step reader 304 is configured to read the steps inruntime table 306. Step reader 304 may analyze the metadata anddetermine which steps should be executed and when. For example, stepreader 304 checks to see if parallel or conditional branching isassociated with a step. The metadata is also used to determine inputarguments for the services. The input arguments may be determined fromthe metadata, from data in lookup tables, or determined using rules.

Step reader 304 may assemble executable process 110 using encapsulatedservices from service 106 and the metadata. For example, code for eachservice that was modeled in the steps is determined for executableprocess 110. The input arguments for each service are also determined.For example, the metadata is used to determine the input arguments suchthat the services can process an order for the business process. Also,any partner links are determined using the metadata to allow theservices to interact with external systems. Executable process 110 isassembled based on the definition of steps in the business process.Because services are re-usable, the same code for a service can be usedfor different business processes. However, the input arguments orpartner links may be different. Because the same code is re-used,automatic assembly of executable process 110 is provided.

Also, the effectivity dates and versioning information may be stored asmetadata in run-time table 304. When an executable process is assembled,the effectivity dates may be checked. If the effectivity date for theexecutable process is invalid, then an error may be returned to theuser. If the effectivity date is valid, then running of the executableprocess may proceed. If the effectivity dates are set for process stepsas well, only those process steps with effectivity dates are run. Also,the version information is used to make sure the correct version of anexecutable process is being run. Services are assembled into anexecutable process 110 as shown in 307. As shown in 307, a step 10 maybe performed and then steps 20, 30, 40, and 50 are performed inparallel. When these steps have been performed, a step 60 is performed.

The versioning may be associated with an executable process withouthaving associated partner links or an URI configured in a command.Conventionally, the version needs to be specified in the partner linksor URI for the process. This requires an IT designer to code andconfigure the executable process for each version. However, particularembodiments assemble the executable process at run-time and do not needto include the version in the URI or partner link. In one embodiment,run-time engine 112 takes the latest released version of businessprocess unless there is configured business logic dictating the use of aprior version.

A flow sequencer 308 is used to dynamically invoke the steps at theappropriate time based on executable process 110. As shown, a step 10may be performed and then steps 20, 30, 40, and 50 are performed inparallel. When these steps have been performed, a step 60 is performed.Flow sequencer 308 may determine relevant input arguments depending onthe content of the metadata received. These input arguments are thenused to invoke a service. For example, flow sequencer 308 may include atask layer reader 310 that determines a service to invoke. A taskinvoker 312 then dynamically invokes the service. Any input argumentsare used to invoke the service. In invoking the service, code for theencapsulated service is executed to coordinate performing of theservice. For example, the executed code may prepare and send a messageto an external system to perform the service.

The service may then be performed and the result is received at resultreceiver 314. In one example, if the task is shipping, then a shippingservice generates a message for a shipping system regarding the shippingof a good. Once the shipping system ships the good, a message isreturned to the shipping service, which stores the result.

After receiving a result, it is then checked whether further sequencesneed to be performed. For example, a while activity module checks to seewhether further services need to be processed. For example, the processmay be returned to flow sequencer 308 to allow for dynamic invocation ofother steps in the process. Also, the while activity module may waituntil parallel branches are completed.

Accordingly, the information required to invoke the services isdetermined automatically based on the runtime table. In one example, inBPEL, necessary partner links for all invocations have been created andare used to invoke the services. The services represented in the BPELpartner links are deployed BPEL processes that require no furtherconfiguration in order to be used in multiple business processdefinitions. When a service is invoked by the runtime engine, thecorresponding partner link is accessed in the underlying BPEL process.Assembly of a service and modification of any service take place throughthe use of the metadata found in the runtime table and may be managedthrough interface 108.

Accordingly, a user can set up the steps in a business process.Executable process 110 can be automatically assembled at run-time. Thecode used in executable process 110 is not generated by the user who setup the business process. Rather, metadata can be defined and is used toassemble encapsulated services for executable process 110.

FIG. 6 depicts a simplified flowchart of a method for checkingeffectivity dates and versioning information according to oneembodiment. Step 602 receives a command to execute an executableprocess. The command may include versioning information for a businessprocess.

Step 604 determines the correct version of the business process. Forexample, a data table for the business process that was modeled usinginterface 108 for the correct version is determined. Step 605 determinesif an effectivity date for the process is set and valid If aneffectivity date is set, it is determined if the effectivity date isvalid in step 606. If the effectivity data is set and not valid or isnot set, the process is not copied to the runtime table and theexecutable process is not performed in step 608. If the effectivity dateis valid, then the service is copied to the runtime table and invoked instep 610. A valid effectivity date may be a “from” date (i.e., a startdate). An end date may or may not be required. Step 610 determinesmetadata for the modeled business process from the data table. Step 612copies the metadata to a run-time table. For example, the metadata isused to assemble an executable process and to invoke services.

Step 614 then reads the run-time table to determine a service to invoke.Step 616 determines if an effectivity date for the service is set. If aneffectivity date was not set, then the service is invoked in step 618.If an effectivity date is set, step 620 determines if the effectivitydate is valid. If not, the service is not invoked in step 622. If theeffectivity date is valid, then the service is invoked in step 618.

Step 624 determines if there are more services to perform. If so, theprocess reiterates to determine another service to invoke in step 610.If not, the process ends.

CONCLUSION

Conventionally, in a BPEL process, different versions could have beencreated and deployed by an IT designer. However, this required an ITdesigner to deploy the process. Particular embodiments do not need aprocess to be deployed to set a version and/or effectivity date.Particular embodiments allow an abstract modeling of a business processthat provides the ability to define versions and their effectivitydates. At run-time, the version and effectivity dates are read and usedin the assembly and execution of an executable process. The differentversions do not need to be deployed. This allows users to modifybusiness processes without affecting versions that are running and alsoallows the pre-deployment of business processes using effectivity dates.

Providing versioning and effectivity dates using an abstract modelingenvironment allows users to create business processes without theinvolvement of an IT designer. Multiple versions of a process may bedeployed and the availability of versions may be restricted usingeffectivity dates. The user needs to set up the sequence of operationson a data table and include version and effectivity date specifications.This information is read at run-time and used to assemble and execute anexecutable process. By not requiring pre-deployment of differentversions prior to run-time, the lifecycle of modeling a business processand having it executed is shortened.

Further description of a distributed order orchestration system isdescribed in U.S. patent application Ser. No. ______, entitled“DISTRIBUTED ORDER ORCHESTRATION” (ORACP0023), filed concurrently andincorporated by reference for all purposes. Also, further details onorchestration are described U.S. patent application Ser. No. ______,entitled “DATA DRIVEN ORCHESTRATION OF BUSINESS PROCESSES” (ORACP0002)and U.S. patent application Ser. No. ______, entitled “REUSABLE BUSINESSSUB-PROCESSES AND RUN-TIME ASSEMBLY” (ORACP0005), all of which are filedconcurrently with this application and all of which are incorporated byreference for all purposes.

Although the description has been described with respect to particularembodiments thereof, these particular embodiments are merelyillustrative, and not restrictive. Although BPEL is described, it willbe understood that other languages may be used.

Any suitable programming language can be used to implement the routinesof particular embodiments including C, C++, Java, assembly language,etc. Different programming techniques can be employed such as proceduralor object oriented. The routines can execute on a single processingdevice or multiple processors. Although the steps, operations, orcomputations may be presented in a specific order, this order may bechanged in different particular embodiments. In some particularembodiments, multiple steps shown as sequential in this specificationcan be performed at the same time.

Particular embodiments may be implemented in a computer-readable storagemedium for use by or in connection with the instruction executionsystem, apparatus, system, or device. Particular embodiments can beimplemented in the form of control logic in software or hardware or acombination of both. The control logic, when executed by one or moreprocessors, may be operable to perform that which is described inparticular embodiments.

Particular embodiments may be implemented by using a programmed generalpurpose digital computer, by using application specific integratedcircuits, programmable logic devices, field programmable gate arrays,optical, chemical, biological, quantum or nanoengineered systems,components and mechanisms may be used. In general, the functions ofparticular embodiments can be achieved by any means as is known in theart. Distributed, networked systems, components, and/or circuits can beused. Communication, or transfer, of data may be wired, wireless, or byany other means.

It will also be appreciated that one or more of the elements depicted inthe drawings/figures can also be implemented in a more separated orintegrated manner, or even removed or rendered as inoperable in certaincases, as is useful in accordance with a particular application. It isalso within the spirit and scope to implement a program or code that canbe stored in a machine-readable medium to permit a computer to performany of the methods described above.

As used in the description herein and throughout the claims that follow,“a”, “an”, and “the” includes plural references unless the contextclearly dictates otherwise. Also, as used in the description herein andthroughout the claims that follow, the meaning of “in” includes “in” and“on” unless the context clearly dictates otherwise.

Thus, while particular embodiments have been described herein, latitudesof modification, various changes, and substitutions are intended in theforegoing disclosures, and it will be appreciated that in some instancessome features of particular embodiments will be employed without acorresponding use of other features without departing from the scope andspirit as set forth. Therefore, many modifications may be made to adapta particular situation or material to the essential scope and spirit.

1. A method for orchestrating an order fulfillment business process, themethod comprising: providing a plurality of services in the orderfulfillment business process; receiving, from an interface, a definitionof the order fulfillment business process including one or more servicesfrom the plurality of services, the one or more services defined insteps to be performed; receiving, from an interface, one or moreeffectivity dates associated with the definition; during run-time,performing the following elements: reading metadata for the definitionreceived from the interface to determine the one or more effectivitydates; if an effectivity date in the one or more effectivity dates isfor the business process, determining if the effectivity date is valid;if the effectivity date is not valid for the business process, notinvoking an executable process to orchestrate the business process; ifan effectivity date in the one or more effectivity dates is associatedwith a step, determining if the effectivity date is valid; if theeffectivity date is not valid for the step, not invoking the step. 2.The method of claim 1, if the effectivity date for the business processis valid, dynamically invoking services based on a determinedorchestration sequence to process an order, wherein the invoking of theservices facilitates performance of services.
 3. The method of claim 1,wherein the effectivity date is for business process, the method furthercomprising: if the effectivity date is not valid, not running theexecutable process for the business process; and if the effectivity dateis valid, running the executable process for the business process. 5.The method of claim 4, wherein running the executable process comprises:storing the definition in a run-time table with the one or moreeffectivity dates associated with the definition; and during run-time,reading metadata for the definition from the run-time table.
 6. Themethod of claim 5, wherein the effectivity date is for a step, themethod further comprising: storing the effectivity date for the step inthe run-time table; during run-time, reading metadata for the definitionfrom the run-time table; determining if the effectivity date associatedwith the step is valid; if the effectivity date is not valid, notinvoking the step in the definition; and if the effectivity date isvalid, invoking the step.
 7. The method of claim 1, wherein the one ormore effectivity dates are associated with the executable process or oneor more of the steps of the executable process.
 8. The method of claim1, further comprising: receiving a modification of definition for thebusiness process; receiving, from an interface, a version identifierassociated with the modified definition of the business process; andassociating the version identifier with a new version of an executableprocess for the business process.
 9. The method of claim 8, wherein thenew version of the executable process does not affect the running of anolder version associated with a different version identifier.
 10. Themethod of claim 1, wherein the effectivity date comprises a period oftime in which the business process is valid.
 11. A computer-readablestorage medium comprising encoded logic for execution by the one or moreprocessors and when executed operable to orchestrate an orderfulfillment business process, the logic operable to: receive, from aninterface, one or more effectivity dates associated with the definition;perform the following elements during run-time: read metadata for thedefinition received from the interface to determine the one or moreeffectivity dates; if an effectivity date in the one or more effectivitydates is for the business process, determine if the effectivity date isvalid; if the effectivity date is not valid for the business process,not invoke an executable process to orchestrate the business process; ifan effectivity date in the one or more effectivity dates is associatedwith a step, determine if the effectivity date is valid; if theeffectivity date is not valid for the step, not invoke the step.
 12. Thecomputer-readable storage medium of claim 11, wherein the logic isoperable to determine if the effectivity date for the business processis valid, dynamically invoke services based on a determinedorchestration sequence to process an order, wherein the invoking of theservices facilitates performance of services.
 13. The computer-readablestorage medium of claim 11, wherein the effectivity date is for businessprocess, wherein the logic is operable to: if the effectivity date isnot valid, not run the executable process for the business process; andif the effectivity date is valid, run the executable process for thebusiness process.
 14. The computer-readable storage medium of claim 13,wherein logic operable to run the executable process comprises logicoperable to: store the definition in a run-time table with the one ormore effectivity dates associated with the definition; and duringrun-time, read metadata for the definition from the run-time table. 15.The method of claim 14, wherein the effectivity date is for a step, themethod further comprising: storing the effectivity date for the step inthe run-time table; during run-time, reading metadata for the definitionfrom the run-time table; determining if the effectivity date associatedwith the step is valid; if the effectivity date is not valid, notinvoking the step in the definition; and if the effectivity date isvalid, invoking the step.
 16. The computer-readable storage medium ofclaim 11, wherein the logic is operable to: receive a modification ofdefinition for the business process; receive, from an interface, aversion identifier associated with the modified definition of thebusiness process; and associate the version identifier with a newversion of an executable process for the business process.
 17. Thecomputer-readable storage medium of claim 16, wherein the new version ofthe executable process does not affect the running of an older versionassociated with a different version identifier.
 18. Thecomputer-readable storage medium of claim 11, wherein the effectivitydate comprises a period of time in which the business process is valid.19. The computer-readable storage medium of claim 11, wherein the one ormore effectivity dates are associated with the executable process or oneor more of the steps of the executable process.
 19. An apparatusconfigured to orchestrate an order fulfillment business process, theapparatus comprising: one or more processors; and logic encoded in oneor more tangible media for execution by the one or more processors andwhen executed operable to: receive, from an interface, one or moreeffectivity dates associated with the definition; and perform thefollowing elements during run-time: read metadata for the definitionreceived from the interface to determine the one or more effectivitydates; if an effectivity date in the one or more effectivity dates isfor the business process, determine if the effectivity date is valid; ifthe effectivity date is not valid for the business process, not invokean executable process to orchestrate the business process; if aneffectivity date in the one or more effectivity dates are associatedwith a step, determine if the effectivity date is valid; and if theeffectivity date is not valid for the step, not invoke the step.